<?php

/**
 * Store_WishlistController
 * 
 * Модуль магазина, контроллер списка желаний
 * Список желаний - это место, где собираются отложенные товары.
 * Их можно добавлять, удалять
 * 
 * @package   Store
 * @author    Игорь Будасов aka Lord <igor.budasov@gmail.com> 
 * @copyright Игорь Будасов aka Lord <igor.budasov@gmail.com> 
 */
 
class Store_WishlistController extends Lord_Controller_Action 
{   
	
/*------------------------------------------------------------------------------*/
		 
	/**
	 * Индексный метод. Отображает список товаров, которые отметил юзер
	 */
	 
	public function indexAction()
	{
        // проверяем, есть ли нужные куки
        $cookie = (isset($_COOKIE['Profit_Wishlist']))
                 ? array_reverse($_COOKIE['Profit_Wishlist'])
                 : array();

        // желаемые товары и их картинки  
        $wishImages = array();
        $wish = ($cookie != null)
                 ? $this->model->getSomeGoods($cookie)
                 : array();
        $wishImagesData = $this->model->getImages($wish)->toArray();
        foreach($wishImagesData as $image)
        {
            $wishImages[$image['gid']] = $image['file'];
        }
        
        Zend_Layout::getMvcInstance()->disableLayout();  
         
        // назначаем в шаблон вида
        $this->view->wishlist = $wish;
        $this->view->wishImages = $wishImages;
        return;
	}

/*------------------------------------------------------------------------------*/

	/**
	* Добавление товара в список желаний
	*/
	
	public function addAction()
	{
        $cookie = array();
        // смотрим айдишник товара
        $id = $this->_checkId();
        if($id != 0)
        {
            // устанавливаем куку с этим айдишником
            $ok = setcookie('Profit_Wishlist['.$id.']',   // имя куки
                            $id,                          // значение
                            time()+60*60*24*30,           // срок хранения
                            '/',                          // путь на сервере
                            '.' . $_SERVER['SERVER_NAME'] // имя сервера
                            );
            // куки ставятся после завершения скрипта, а нам нужно сейчас,
            // потому как аякс не ждет. Сделаем небольшую хитрость:
            $cookie[$id] = $id;
        }
        
        // проверяем, есть ли нужные куки
        if(isset($_COOKIE['Profit_Wishlist'])) 
            $cookie = array_merge($_COOKIE['Profit_Wishlist'], $cookie);

        // желаемые товары и их картинки  
        $wishImages = array();
        $wish = ($cookie != null)
                 ? $this->model->getSomeGoods($cookie)
                 : array();
        $wishImagesData = $this->model->getImages($wish)->toArray();
        foreach($wishImagesData as $image)
        {
            $wishImages[$image['gid']] = $image['file'];
        }
        
        Zend_Layout::getMvcInstance()->disableLayout();  
         
        // назначаем в шаблон вида
        $this->view->wishlist = $wish;
        $this->view->wishImages = $wishImages;
        return;
	}


/*------------------------------------------------------------------------------*/
 
	/**
	* Удаление товара из списка пожеланий
	*/
	
	function deleteAction()
	{
        // смотрим айдишник товара
        $id = $this->_checkId();
            
        // устанавливаем куку с этим айдишником, но с отрицательным временем
        $ok = setcookie('Profit_Wishlist['.$id.']',   // имя куки
                        $id,                          // значение
                        time()-60*60*24*30,           // срок хранения
                        '/',                          // путь на сервере
                        '.' . $_SERVER['SERVER_NAME'] // имя сервера
                        );  
                        
        // проверяем, есть ли нужные куки
        $cookie = (isset($_COOKIE['Profit_Wishlist']))
                 ? array_reverse($_COOKIE['Profit_Wishlist'])
                 : array();
        // удаляем неную запись о куке из массива
        unset($cookie[array_search($id, $cookie)]);
        
        // желаемые товары и их картинки  
        $wishImages = array();
        $wish = ($cookie != null)
                 ? $this->model->getSomeGoods($cookie)
                 : array();
        $wishImagesData = $this->model->getImages($wish)->toArray();
        foreach($wishImagesData as $image)
        {
            $wishImages[$image['gid']] = $image['file'];
        }      
                   
        Zend_Layout::getMvcInstance()->disableLayout();
        // перекидываем на страничку товара
        // $this->_redirect($_SERVER['HTTP_REFERER']);
        //$this->_forward('index', 'wishlist', 'store');

        // назначаем в шаблон вида
        $this->view->wishlist = $wish;
        $this->view->wishImages = $wishImages;
        return;
	}
	
/*==============================================================================*/

	/**
	* Приватный метод для проверки айдишника записи
	*/
	
	private function _checkId()
	{
		$id = $this->_getParam('id');
		 
		if( $id == false
			or $id == null
			or empty($id)
			or !isset($id))
		{
			return 0;
		}
		else
		{
			return (int)$id;
		}
	}

/*------------------------------------------------------------------------------*/
}
